package main

import "fmt"

// func在go中属于一等公民 可以作为变量  参数 返回值等
// 函数式编程练习 返回参数也是函数
// 闭包实现累加器
// 闭包的概念：函数体有局部变量+自由变量
func adder() func(int) int {
	sum := 0
	return func(i int) int {
		sum += i
		return sum
	}
}
func main() {
	a := adder()
	for i := 0; i < 10; i++ {
		fmt.Printf(" 0 + 1 + ... + %d = %d\n", i, a(i))
	}
}
